package V_A.VSQ.OPE.jogl;

import com.jogamp.opengl.GL2;

//作者： 罗瑶光, 浏阳, 基于java mesh api demo 研发
/*
 * 个人著作权人, 作者 罗瑶光, 浏阳
 * yaoguangluo@outlook.com, 313699483@qq.com, 2080315360@qq.com,
 * (lyg.tin@gmail.com2018年回国后因国内G网屏蔽不再使用）
 * 15116110525-浏阳德塔软件开发有限公司-创始人-法人-总经理-永久非盈利-
 * 430181198505250014, G24402609, EB0581342
 * 204925063, 389418686, F2406501, 0626136
 * 湖南省 浏阳市 集里街道 神仙坳社区 大塘冲一段路 208号 阳光家园别墅小区 第十栋别墅 第三层
 * */
public class JOGLDrawOBJ {
    public JOGLDrawOBJ(GL2 gl, JOGLOBJShape m, String filename, double dd) {
        JOGLObjLoader oml = new JOGLObjLoader();
        m = oml.loadFile(filename);
        new JOGLDrawOBJ(gl, m, dd);
    }

    public JOGLDrawOBJ(GL2 gl, JOGLOBJShape m, double dd) {
        for (int i = 0; i < m.numberOfFaces(); i++) {
            gl.glBegin(GL2.GL_POLYGON);
            for (int j = 0; j < m.getFaceList().get(i).getVerts().length; j++) {
                JOGLOBJVec4 norm = m.getFaceList().get(i).getVerts()[j]
                        .getNormal();
                if (norm != null) {
                    gl.glNormal3d(norm.getX(), norm.getY(), norm.getZ());
                }
                JOGLOBJVec4 color = m.getFaceList().get(i).getVerts()[j]
                        .getTexcoords();
                if (color != null) {
                    gl.glColor3d((color.getX()), (color.getY()), (color.getZ()));
                }
                JOGLOBJVec4 locat = m.getFaceList().get(i).getVerts()[j]
                        .getLocation();
                if (locat != null) {
                    gl.glVertex3d(locat.getX() + Math.sin(locat.getY() / (5 * dd)) / 10
                            , locat.getY(), locat.getZ());
                }
            }
            gl.glEnd();
        }
    }
}
